POV 1 - Chooser EnhancementsFurther Reference:*OV 2 - Checking for Specific FunctionalityUsing SysEnvironsIn C:#Checking for Specific FunctionalityFurther Reference:OV 3 - Compatibility GuidelinesOV 4 - Compatibility: Why & HowCompatibility: the outlineSummary
What it IsWhat the “Rules” meanIt’s your choice
Bad Things#Assuming the screen is a fixed sizeWhy it’s Bad)How to avoid becoming a screening fascist1How to find fascist screenism in current programs*Assuming the screen is at a fixed locationWhy it’s Bad"How to avoid being a base screenerHow to find base screeners:Assuming that rowbytes is equal to the width of the screenWhy it’s BadHow to avoid being a row byterHow to find row byters!Using nil Handles or nil PointersWhy it’s BadHow to avoid being a NillerHow to find NillersCreating or Using Fake HandlesWhy it’s BadHow to avoid being a fakirHow to find fakirs"Writing code that modifies itself Why it’s BadHow to avoid being an abuserHow to find abusers)Code designed strictly as copy protectionWhy it’s Bad"How to avoid being a protectionistHow to find protectionists)Check errors returned as function resultsWhy it’s BadHow to find skippersAccessing hardware directlyWhy it’s bad!How to avoid having a hard attackHow to find hard attacks Don’t use bits that are reservedHow to avoid being bittenHow to find those bittenSummaryFurther Reference:&OV 5 - The Desktop File’s Outer LimitsFurther Reference:4OV 6 - Finder Notes: “Get Info” Default & Icon Masks:Creator String will be the default “Get Info” comment text#Icon Masks should match their iconsFurther Reference:)OV 7 - Large-Screen Display CompatibilityFurther Reference:OV 8 - Managerial AbuseNo free databaseWords to live byChecking lists twiceDialog with the devilFurther Reference:-OV 9 - Debugging With PurgeMem and CompactMemFurther Reference: OV 10 - Setting and Restoring A5IntroductionThe Old WayThe New, Totally Cool WayThe Interfaces
MPW PascalMPW CAssembly LanguageA Special NoteFurther Reference:%OV 11 - The Joy Of Being 32-Bit CleanIntroduction
General RulesHardware & CPUsMemory ManagerResource ManagerWDEFs and CDEFsFile SystemLow-Memory GlobalsTrap PatchesSoundFurther Reference:OV 12 - Version Territory Apple’s Version Numbering SchemeVersion Resources
MPW PascalMPW C Version Resources and the Finder,Figure 1–Get Info Window for the Finder File
Final NoteFurther Reference:OV 13 - 10+ Commandments1. Write in ANSI C or C++2. Align Data StructuresC3. Don’t Depend on 68K Run-time Model (Stacks, A5, Segmentation...))4. Isolate and Minimize Use of Low Memory?5. Isolate and Minimize Use of Internal Toolbox Data Structures6. Don’t Intermix Data and Code17. Isolate Dependencies on 80 and 96-bit Extended58. Don’t Depend on Interrupt Level or Supervisor Mode9. 32-bit Clean Mandatory#10. Don’t Hit the Hardware Directly 11. Don’t Directly Patch the ROM612. Don’t Depend on Resources Being in the System File=13. Don’t Make Assumptions About the Contents and Size of ROM14. SCSI SCSIStat: Protocol:Patches:15. VIAs16. Do the Right ThingFurther Reference3OV 14 - A5 Within Trap Patches - Don't Depend on ItFurther Reference:OV 15 - Debugging Tips*Setting memory location 0 to something odd!Checksumming for slow motion modeChecksumming MemErr Checksumming on a master pointer3OV 16 - Gestalt & _SysEnvirons—A Never-Ending StoryIntroduction_Gestalt"Additional Gestalt Response ValuesgestaltHardwareAttr Selector=New gestaltHardwareAttr Values for Macintosh Quadra ComputersSysEnvirons/Calling _SysEnvirons From a High-Level Language!Additional _SysEnvirons ConstantsFurther Reference:.OV 17 - MultiFinder Revisited: The 6.0 SystemRelease)How Can I Tell If MultiFinder is Present?"_WaitNextEvent is Always Available _MFTopMemMFTempHandles Are Not HandlesMouse-Moved Event ConfusionNew MultiFinder FeaturesOpen Document and Quit Additions to the 'SIZE' Resource"Figure 1–'SIZE' Resource Flag Bits(Figure 2–Message Field of childDiedEventFurther Reference:OV 18 - Resource in CDEV?A New World for Control Panels*What Is This 'fwst' Thing in My CDev?!?!?!One More Thing*What Does This Have to Do With the 'fwst'?Further Reference:OV 19 - Stationery PadsConfiguration Files6An alternative to configuration files: Stationery Pads!A Document and its Stationery padFurther Reference:&OV 20 – Internationalization ChecklistIntroduction
References!Creating a Generic User InterfaceWhy It Is RelevantNegative ExampleNegative ExampleNegative Example
What to DoWhat to ReadRunning on System 6.x or 7.0Why It Is Relevant
What to DoWhat to ReadWorking With Language KitsWhy It Is RelevantNegative ExampleNegative Example
What to DoWhat to ReadDisabling the fontForce FeatureWhy It Is Relevant
What to Do
What to AvoidWhat to Read
Finding FontsWhy It Is Relevant
What to Do
What to AvoidDisplaying Font Menus and ListsWhy It Is Relevant
What to DoWhat to ReadHard-Coding CoordinatesWhy It Is Relevant
What to Do
What to Avoid&Hard-Coding Strings and String LengthsWhy It Is Relevant
What to Do
What to AvoidWhat to ReadConcatenating StringsWhy It Is RelevantNegative ExampleNegative Example
What to Do
What to AvoidString Substitution
What it isWhy It Is RelevantPositive ExamplePositive ExampleNegative ExampleNegative Example
What to Do
What to AvoidWhat to ReadTruncating StringsWhy It Is Relevant
What to DoWhat to Read"Working With Individual CharactersWhy It Is Relevant
What to Do
What to AvoidWhat to ReadSorting StringsWhy It Is RelevantWhat to ReadEditing TextWhy It Is Relevant
What to Do
What to AvoidWhat to ReadInline InputWhy It Is Relevant
What to DoWhat to Read PasswordsWhy It Is Relevant
What to DoWhat to ReadText SearchingWhy It Is RelevantNegative ExampleNegative ExampleNegative Example
What to Do
What to AvoidMoving and Hiding Dialog ItemsWhy It Is Relevant
What to DoNumber FormattingWhy It Is RelevantNegative ExampleNegative ExamplePositive ExamplePositive ExamplePositive ExampleWhat to ReadCurrency FormatsWhy It Is RelevantPositive Example
What to DoWhat to ReadDate and Time FormatsWhy It Is RelevantNegative ExamplePositive ExamplePositive Example
What to DoWhat to Read
Other FormatsWhy It Is Relevant
What to DoPaper and Envelope SizesWhy It Is Relevant
What to DoMeasurement SystemsWhy It Is Relevant
What to DoWhat to ReadCustom Resource TypesWhy It Is Relevant
What to Do
What to AvoidWhat to ReadMenusWhy It Is Relevant
What to Do
What to Avoid#Keyboard Equivalents (Command Keys)Why It Is Relevant
What to Do
What to AvoidWhat to ReadGraphicsWhy It Is Relevant
What to DoSound and VoiceWhy It Is Relevant
What to Do
What to AvoidInstaller ScriptsWhy It Is RelevantNegative Example
What to Do
What to AvoidWhat to Read
EncryptionWhy It Is Relevant
What to DoTrademark SymbolsWhy It Is Relevant
What to DoAcknowledgementsFurther Reference:Further Reference (continued):OV 505 - Compatibility Q&As4Macintosh Install Me First disk model-specific files)Number suffix in system enabler file name)Whether to develop for Macintosh System 6 OV 510 - WorldWide Overview Q&As+Changing DITL resource to adapt to language7Maintaining one application version with localized text(Macintosh 'vers' resource language field)Disabling multiscript keyboard menu items3Human interface for wildcards and boolean operators#12 Golden Rules of worldwide design&International documents reference list)International VBL timing on the Macintosh